万卷网> GESP认证 >C++ > 2025年12月CCF—GESP(C++三级)编程能力等级认证试卷

2025年12月CCF—GESP(C++三级)编程能力等级认证试卷
三级 2025 2026-07-21 18:00:16 72

一、单选题

1.

以下关于标准 C++ 一维数组的描述,哪一项是错误的?( )

A.

数组的下标从0开始

B.

数组在内存中是连续存放的

C.

数组的长度只能在运行时才能确定

D.

可以在程序中修改数组某个元素的值

2.

在一个特定的计算机系统中,假如 unsigned int 类型需要占用2个字节的存储空间(每个字节有8位),则 unsigned int 可以表示的数据范围是( )

A.

0 ~ 65535

B.

0 ~ 65536

C.

-65536 ~ 65535

D.

0 ~ 32767

3.

a & b | (c ^ d) ,其中 a = 3, b = 7, c = 15, d = 4 ,计算结果是( )

A.

十进制11

B.

二进制11

C.

八进制11

D.

十六进制11

4.

根据下面的流程图,如果成绩 score 输入 60 ,输出的结果是( )

A.

优秀

B.

及格

C.

不及格

D.

没有输出

5.

以下代码执行后,数组 arr 的内容是( )

int arr[6] = {1, 2, 3, 4, 5, 6}; 
for (int i = 0; i < 6; i += 2) { 
    arr[i] = arr[i] + arr[i+1]; 
    arr[i+1] = arr[i] - arr[i+1]; 
    arr[i] = arr[i] - arr[i+1]; 
}
A.

{2,1,4,3,6,5}

B.

{1,2,3,4,5,6}

C.

{3,1,4,2,5,3}

D.

{1,3,2,5,4,6}

6.

以下关于 C++ 中 abs() 函数的描述,正确的是( )

A.

abs() 函数可用于计算 int 类型整数的绝对值,头件为 <cmath> 或 <cstdlib>

B.

调用 abs(3.14) 可以四舍五入得到 3

C.

abs(-1, -2) 的返回值是 1

D.

若传入负数浮点数, abs() 会自动截断小数部分后返回整数绝对值

7.

如果字符串 s 的值是 GESP ,以下代码 s 的最后结果是( )

for (int i = 0; i < s.length(); i++) { 
    s[i] = toupper(s[i] + i); 
}
A.

GESP

B.

HFTR

C.

hesp

D.

GFUS

8.

执行以下程序段,输出值是( )

int x = 5; 
if (x == 3 >> 2) x = 8 >> 3; 
cout << x << endl;
A.

0

B.

5

C.

120

D.

1

9.

以下代码运行后, sum 的结果是( )

int arr[5] = {2, 4, 6, 8, 10}; 
int sum = 0; 
for (int i = 0; i < 5; i++) { 
    switch (arr[i] % (1|2)) { 
        case 0: sum += 1; break; 
      case 1: sum += 2; break; 
            case 2: sum += 3; break; 
    } 
}
A.

10

B.

11

C.

14

D.

15

10.

下列代码段执行后,变量 sum 的值是( )

{ 
    int sum = 0; 
    for (int i = 1; i <= 10; i++) { 
        if (i % 3 == 8>>2) 
            continue; 
        sum += i; 
    } 
}
A.

12

B.

17

C.

33

D.

40

11.

请将二进制数(1101.101)2转换为等值的10进制数 (       )

A.

14.25

B.

13.625

C.

13.5

D.

14.5

12.

以下代码是一个程序的部分代码,能够正确执行,输出的结果是( )

int arr[5] = {1, 2, 3, 4, 5}; 
int p = arr[1]; 
cout << (p + 2) << endl;
A.

1

B.

2

C.

3

D.

4

13.

已知字符串 s = "C++ Programming" ,下列程序运行的结果是( )

cout << (int)(s.length() | 3) << endl;
A.

14

B.

15

C.

16

D.

17

14.

以下关于 C++ 求最小值函数 min() 的描述,不正确的是( )

A.

函数必须返回一个值

B.

该函数可以嵌套调用

C.

调用 min(5) 是错误的,不能通过编译

D.

调用 min() (不传任何参数)可以通过编译,结果为 0

15.

整型变量 x 的初始值为 10 ,以下代码的输出结果是( )

int t = x--; 
t -= x; 
cout << t << endl;
A.

0

B.

-1

C.

1

D.

死循环

二、判断题

1.

整型变量 a 的值为 3 ,浮点数变量 b 的值为 3.5 ,在 C++ 编译环境下,经过 a *= b 计算后, a 的值变为 10.5 ,此时如果输出 a ,将输出 10.5 。

A.正确 B.错误
2.

给定一个正整数 a ,当需要计算 -a 的补码时,有这样一个计算技巧:将 a 的二进制形式从右往左扫描,遇到第一个 1 之后,将找到的第一个 1 左边的所有位都取反,能得到 -a 的补码。

A.正确 B.错误
3.

以下代码中, Hello 将被输出5次。

for (int i = 0; i < 5; i++); 
{ 
    cout << "Hello" << endl; 
}
A.正确 B.错误
4.

以下代码输出结果为 8 。

int a = 5, b = 3; 
int c = a++ + ++b; 
cout << c << endl;
A.正确 B.错误
5.

在 C++ 中, int a[] = {1, 2, 3, 4, 5}; 可以定义一个包含 5 个元素的整型数组。

A.正确 B.错误
6.

在 C++ 中, ++ 和 -- 运算符只能用于整型变量,不能用于浮点数变量。

A.正确 B.错误
7.

C++ 表达式 z = a > b ? x : y 等同于:

if (a > b) { 
    z = x; 
} else { 
    z = y; 
}

以下代码执行后,输出将会是 2 。

int main() { 
    int arr[5] = {1, 2, 3, 4, 5}; 
    cout << arr[3 > 2 ? 1 : 2] << endl; 
    return 0; 
}
A.正确 B.错误
8.

位运算符 & 、 | 、 ^ 、 ~ 的优先级高于算术运算符 + 、 - 、 * 、 / 。

A.正确 B.错误
9.

strcmp(str1, str2) 返回 0 表示 str1 大于 str2 ,返回正数表示两者相等。

A.正确 B.错误
10.

在 C++ 中,数组名不能改变,数组名不能被赋值。

A.正确 B.错误

三、编程题

1.

密码强度

时间限制:1.0 s

内存限制:512.0 MB

题目描述

小杨是学校网络安全小组的成员 ,今天他的任务是设计一个“密码强度检测器” ,帮助同学们检查自己的密码是否足够安全 。一个安全的密码需要满足以下条件:

密码至少包含8个字符(太短的密码容易被猜出来哦!)。

密码至少包含一个大写字母(A、B、C、...、Z 都可以)。

密码至少包含一个数字(0、1、2、3、...、9 都可以)。

例如:

密码 PAs1s2an  是安全密码(有8位、包含大写字母  P 、  A  和数字 1  、  2  )。

密码 ab1da3cd  不是安全密码(没有大写字母) 。

密码 Paabdbcd  不是安全密码(没有数字) 。

密码 Pa2  不是安全密码(只有3位 ,太短了) 。

输入格式

第一行一个正整数 T,代表需要安全检测的密码组数。

对于每组密码,一行包含一个字符串,代表需要安全检测的密码。

输出格式

对于每组密码,输出一行,如果满足强度要求输出 Y,否则输出 N

输入样例

6
PAs1s2an
1a2bCql3
Pa12bsna
ab1da3cd
Paabdbcd
Pa2

输出样例

Y
Y
Y
N
N
N

样例解释

密码 PAs1s2an 是安全密码(有8位、包含大写字母 P 、 A 和数字 1 、 2 )。

密码 1a2bCql3 是安全密码(有8位、包含大写字母 C 和数字 1 、 2 、 3 )。

密码 Pa12bsna 是安全密码(有8位、包含大写字母 P 和数字 1 、 2 )。

密码 ab1da3cd 不是安全密码(没有大写字母)。

密码 Paabdbcd 不是安全密码(没有数字)。

密码 Pa2 不是安全密码(只有3位,太短了)。

数据范围

对于所有测试点 ,保证 1 ≤ T ≤ 100 ,并且每组密码长度不超过 100 且至少为 1 ,每组密码仅由大小写字母和数字组成。

2.

小杨的智慧购物

时间限制:1.0 s

内存限制:512.0 MB

题目描述

小杨的班级要举办一个环保手工作品展览,老师请小杨去文具店购买 M 种不同的文具(例如:铅笔、橡皮、尺子等)。

商店里共有 N 件文具 ,每件文具都有一个种类编号(从 1 到 M) 和价格。

小杨的预算有限 ,他想了一个聪明的办法:对于每种文具 ,他只买最便宜的那一件(如果同种文具有多件价格相同且都是最便宜的 ,他只会购买其中的一件) 。请你帮小杨计算出 ,买齐这 种文具一共需要花费多少钱。

输入格式

第一行两个正整数 M, N ,代表文具的种类数和总数。

之后N行,每行两个正整数Ki和Pi,分别代表第 件文具的种类编号和它的价格。数据保证每个种类至少有一件文具可供购买。

输出格式

输出一行,代表购买文具的总价。

输入样例

2 5
1 1
1 2
1 1
2 3
2 10

输出样例

4

样例解释

文具清单如下:

文具 1:种类 1,价格 1

文具 2:种类 1,价格 2

文具 3:种类 1,价格 1

文具 4:种类 2,价格 3

文具 5:种类 2,价格 10

小杨的选择过程:对于种类 1 :有三件商品 ,价格分别为 1 , 2, 1 。其中最便宜的价格是 1 。对于种类 2 :有两件商品 ,价格分别为 3, 10 。其中最便宜的价格是 3 。

计算总价:小杨购买这两类文具的总花费为 1 + 3 = 4。

数据范围

公众号
客服 反馈
顶部